<!DOCTYPE html>
<html>
<!-- Created by GNU Texinfo 7.1.1, https://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<!-- This file documents the use of the GNU compilers.

Copyright © 1988-2023 Free Software Foundation, Inc.

Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with the
Invariant Sections being "Funding Free Software", the Front-Cover
Texts being (a) (see below), and with the Back-Cover Texts being (b)
(see below).  A copy of the license is included in the section entitled
"GNU Free Documentation License".

(a) The FSF's Front-Cover Text is:

A GNU Manual

(b) The FSF's Back-Cover Text is:

You have freedom to copy and modify this GNU Manual, like GNU
     software.  Copies published by the Free Software Foundation raise
     funds for GNU development. -->
<title>C Extensions (Using the GNU Compiler Collection (GCC))</title>

<meta name="description" content="C Extensions (Using the GNU Compiler Collection (GCC))">
<meta name="keywords" content="C Extensions (Using the GNU Compiler Collection (GCC))">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta name="viewport" content="width=device-width,initial-scale=1">

<link href="index.html" rel="start" title="Top">
<link href="Indices.html" rel="index" title="Indices">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="index.html" rel="up" title="Top">
<link href="C_002b_002b-Extensions.html" rel="next" title="C++ Extensions">
<link href="C_002b_002b-Implementation.html" rel="prev" title="C++ Implementation">
<style type="text/css">
<!--
a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
kbd.key {font-style: normal}
span:hover a.copiable-link {visibility: visible}
-->
</style>


</head>

<body lang="en_US">
<div class="chapter-level-extent" id="C-Extensions">
<div class="nav-panel">
<p>
Next: <a href="C_002b_002b-Extensions.html" accesskey="n" rel="next">Extensions to the C++ Language</a>, Previous: <a href="C_002b_002b-Implementation.html" accesskey="p" rel="prev">C++ Implementation-Defined Behavior</a>, Up: <a href="index.html" accesskey="u" rel="up">Introduction</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Indices.html" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<h2 class="chapter" id="Extensions-to-the-C-Language-Family"><span>6 Extensions to the C Language Family<a class="copiable-link" href="#Extensions-to-the-C-Language-Family"> &para;</a></span></h2>
<a class="index-entry-id" id="index-extensions_002c-C-language"></a>
<a class="index-entry-id" id="index-C-language-extensions"></a>

<a class="index-entry-id" id="index-pedantic-2"></a>
<p>GNU C provides several language features not found in ISO standard C.
(The <samp class="option">-pedantic</samp> option directs GCC to print a warning message if
any of these features is used.)  To test for the availability of these
features in conditional compilation, check for a predefined macro
<code class="code">__GNUC__</code>, which is always defined under GCC.
</p>
<p>These extensions are available in C and Objective-C.  Most of them are
also available in C++.  See <a class="xref" href="C_002b_002b-Extensions.html">Extensions to the
C++ Language</a>, for extensions that apply <em class="emph">only</em> to C++.
</p>
<p>Some features that are in ISO C99 but not C90 or C++ are also, as
extensions, accepted by GCC in C90 mode and in C++.
</p>

<ul class="mini-toc">
<li><a href="Statement-Exprs.html" accesskey="1">Statements and Declarations in Expressions</a></li>
<li><a href="Local-Labels.html" accesskey="2">Locally Declared Labels</a></li>
<li><a href="Labels-as-Values.html" accesskey="3">Labels as Values</a></li>
<li><a href="Nested-Functions.html" accesskey="4">Nested Functions</a></li>
<li><a href="Nonlocal-Gotos.html" accesskey="5">Nonlocal Gotos</a></li>
<li><a href="Constructing-Calls.html" accesskey="6">Constructing Function Calls</a></li>
<li><a href="Typeof.html" accesskey="7">Referring to a Type with <code class="code">typeof</code></a></li>
<li><a href="Conditionals.html" accesskey="8">Conditionals with Omitted Operands</a></li>
<li><a href="_005f_005fint128.html" accesskey="9">128-bit Integers</a></li>
<li><a href="Long-Long.html">Double-Word Integers</a></li>
<li><a href="Complex.html">Complex Numbers</a></li>
<li><a href="Floating-Types.html">Additional Floating Types</a></li>
<li><a href="Half_002dPrecision.html">Half-Precision Floating Point</a></li>
<li><a href="Decimal-Float.html">Decimal Floating Types</a></li>
<li><a href="Hex-Floats.html">Hex Floats</a></li>
<li><a href="Fixed_002dPoint.html">Fixed-Point Types</a></li>
<li><a href="Named-Address-Spaces.html">Named Address Spaces</a></li>
<li><a href="Zero-Length.html">Arrays of Length Zero</a></li>
<li><a href="Empty-Structures.html">Structures with No Members</a></li>
<li><a href="Variable-Length.html">Arrays of Variable Length</a></li>
<li><a href="Variadic-Macros.html">Macros with a Variable Number of Arguments.</a></li>
<li><a href="Escaped-Newlines.html">Slightly Looser Rules for Escaped Newlines</a></li>
<li><a href="Subscripting.html">Non-Lvalue Arrays May Have Subscripts</a></li>
<li><a href="Pointer-Arith.html">Arithmetic on <code class="code">void</code>- and Function-Pointers</a></li>
<li><a href="Variadic-Pointer-Args.html">Pointer Arguments in Variadic Functions</a></li>
<li><a href="Pointers-to-Arrays.html">Pointers to Arrays with Qualifiers Work as Expected</a></li>
<li><a href="Initializers.html">Non-Constant Initializers</a></li>
<li><a href="Compound-Literals.html">Compound Literals</a></li>
<li><a href="Designated-Inits.html">Designated Initializers</a></li>
<li><a href="Case-Ranges.html">Case Ranges</a></li>
<li><a href="Cast-to-Union.html">Cast to a Union Type</a></li>
<li><a href="Mixed-Labels-and-Declarations.html">Mixed Declarations, Labels and Code</a></li>
<li><a href="Function-Attributes.html">Declaring Attributes of Functions</a></li>
<li><a href="Variable-Attributes.html">Specifying Attributes of Variables</a></li>
<li><a href="Type-Attributes.html">Specifying Attributes of Types</a></li>
<li><a href="Label-Attributes.html">Label Attributes</a></li>
<li><a href="Enumerator-Attributes.html">Enumerator Attributes</a></li>
<li><a href="Statement-Attributes.html">Statement Attributes</a></li>
<li><a href="Attribute-Syntax.html">Attribute Syntax</a></li>
<li><a href="Function-Prototypes.html">Prototypes and Old-Style Function Definitions</a></li>
<li><a href="C_002b_002b-Comments.html">C++ Style Comments</a></li>
<li><a href="Dollar-Signs.html">Dollar Signs in Identifier Names</a></li>
<li><a href="Character-Escapes.html">The Character <kbd class="key">ESC</kbd> in Constants</a></li>
<li><a href="Alignment.html">Determining the Alignment of Functions, Types or Variables</a></li>
<li><a href="Inline.html">An Inline Function is As Fast As a Macro</a></li>
<li><a href="Volatiles.html">When is a Volatile Object Accessed?</a></li>
<li><a href="Using-Assembly-Language-with-C.html">How to Use Inline Assembly Language in C Code</a></li>
<li><a href="Alternate-Keywords.html">Alternate Keywords</a></li>
<li><a href="Incomplete-Enums.html">Incomplete <code class="code">enum</code> Types</a></li>
<li><a href="Function-Names.html">Function Names as Strings</a></li>
<li><a href="Return-Address.html">Getting the Return or Frame Address of a Function</a></li>
<li><a href="Vector-Extensions.html">Using Vector Instructions through Built-in Functions</a></li>
<li><a href="Offsetof.html">Support for <code class="code">offsetof</code></a></li>
<li><a href="_005f_005fsync-Builtins.html">Legacy <code class="code">__sync</code> Built-in Functions for Atomic Memory Access</a></li>
<li><a href="_005f_005fatomic-Builtins.html">Built-in Functions for Memory Model Aware Atomic Operations</a></li>
<li><a href="Integer-Overflow-Builtins.html">Built-in Functions to Perform Arithmetic with Overflow Checking</a></li>
<li><a href="x86-specific-memory-model-extensions-for-transactional-memory.html">x86-Specific Memory Model Extensions for Transactional Memory</a></li>
<li><a href="Object-Size-Checking.html">Object Size Checking</a></li>
<li><a href="Other-Builtins.html">Other Built-in Functions Provided by GCC</a></li>
<li><a href="Target-Builtins.html">Built-in Functions Specific to Particular Target Machines</a></li>
<li><a href="Target-Format-Checks.html">Format Checks Specific to Particular Target Machines</a></li>
<li><a href="Pragmas.html">Pragmas Accepted by GCC</a></li>
<li><a href="Unnamed-Fields.html">Unnamed Structure and Union Fields</a></li>
<li><a href="Thread_002dLocal.html">Thread-Local Storage</a></li>
<li><a href="Binary-constants.html">Binary Constants using the &lsquo;<samp class="samp">0b</samp>&rsquo; Prefix</a></li>
</ul>
</div>
<hr>
<div class="nav-panel">
<p>
Next: <a href="C_002b_002b-Extensions.html">Extensions to the C++ Language</a>, Previous: <a href="C_002b_002b-Implementation.html">C++ Implementation-Defined Behavior</a>, Up: <a href="index.html">Introduction</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Indices.html" title="Index" rel="index">Index</a>]</p>
</div>



</body>
</html>
